package com.demo.java.OD401_450.OD413;

import java.util.Scanner;

/**
 * @author bug菌
 * @Source 公众号：猿圈奇妙屋
 * @des： 【中秋分月饼(C&D卷)】问题
 * @url： https://blog.csdn.net/weixin_43970743/article/details/146254341
 */
public class OdMain {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        int m = scanner.nextInt();  // 员工数量
        int n = scanner.nextInt();  // 月份数量

        // dp数组初始化
        int[][][] dp = new int[m + 1][n - m + 2][n + 1];

        // 初始状态：第一个员工分配月份
        for (int j = 1; j <= n / m; j++) {
            dp[1][j][j] = 1;
        }

        // 动态规划状态转移
        for (int i = 1; i < m; i++) {  // 遍历员工数
            for (int j = 1; j <= n - m + 1; j++) {  // 遍历分配的月份数
                for (int k = i; k <= n; k++) {  // 遍历已分配的总月份数
                    for (int d = 0; d < 4; d++) {  // 遍历每个员工可分配的月份差
                        if (j + d < n - m + 2 && k + j + d <= n) {
                            dp[i + 1][j + d][k + j + d] += dp[i][j][k];  // 状态转移
                        }
                    }
                }
            }
        }

        // 计算最终结果
        int ans = 0;
        for (int j = 1; j <= n - m + 1; j++) {
            ans += dp[m][j][n];  // 累加所有可能的分配方法
        }

        // 输出结果
        System.out.println(ans);
    }
}
